package com.tfjybj.itoo.teach.provider.service;

import com.dmsdbj.itoo.tool.base.service.BaseServicePlus;
import com.dmsdbj.itoo.tool.business.ItooResult;
import com.github.pagehelper.PageInfo;
import com.tfjybj.itoo.teach.entity.StaffEntity;
import com.tfjybj.itoo.teach.model.StaffModel;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * StaffService接口
 * staff表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
public interface StaffService extends BaseServicePlus<StaffEntity> {

    //region 模板生成：模糊查询

    /**
     * 根据教师姓名模糊查询staff
     *
     * @param name     教师姓名
     * @param pageNo   页码
     * @param pageSize 页数
     * @return 模糊查询的staff
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    PageInfo<StaffModel> queryByLikeName(String name, Integer pageNo, Integer pageSize);
    //endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 根据教师编码查询staff
     *
     * @param code 教师编码
     * @return staffModel
     * @author 张家豪
     * @since 2018.11.15 20:09
     */
    List<StaffModel> queryByCode(String code);

    /**
     * 根据学院ID查询本学院教师
     *
     * @param academy 学院ID
     * @return staffModel
     * @author 张家豪
     * @since 2018.11.18 14:09
     */
    List<StaffModel> queryStaffByAcademy(String academy);

    /**
     * 查询所有教师信息（初始化页面）
     *
     * @param pageNo 页码
     * @param pageSize 页数
     * @return staffModel
     * @author 张家豪
     * @since 2018.11.22 17:07
     */
    PageInfo<StaffModel> queryAllStaff(Integer pageNo, Integer pageSize);

    /**
     * 根据教职工号或者机构Id查询staff
     *
     * @param pageNo 页码
     * @param pageSize 页数
     * @param code    教职工号
     * @param academy 机构名称
     * @return staffModel
     * @author 张家豪
     * @since 2018.11.22 20:23
     */
    PageInfo<StaffModel> queryStaffByCodeAndAcademy(Integer pageNo, Integer pageSize, String code, String academy);

    /**
     * 导出
     *
     * @param response 响应
     * @param staffName 教师姓名
     * @param staffCode 教师编号
     * @param academy 学院id
     * @return 导出excel
     * @author 张家豪
     * @since 2018.11.24 11:35
     */
    ItooResult exportStaffInfo(HttpServletResponse response, String staffName, String staffCode, String academy);

    /**
     * 根据多个机构查询staff
     *
     * @param academys 机构id集合
     * @param pageNo 页码
     * @param pageSize 页数
     * @return staffModel
     * @author 张家豪
     * @since 2018.11.24 20:43
     */
    PageInfo<StaffModel> queryByAcademys(List<String> academys, Integer pageNo, Integer pageSize);

    /**
     * 导入教师信息
     *
     * @param multipartFile 批量导入的文件
     * @param request       请求
     * @param response      响应
     * @return itooresult 批量导入的结果
     * @author 张家豪
     * @since 2018.11.25 08:38
     */
    ItooResult importStaff(MultipartFile multipartFile, HttpServletRequest request, HttpServletResponse response);

    /**
     * 下载模板-导入用
     *
     * @param response 响应
     * @return 下载成功或失败
     * @author 张家豪
     * @since 2018.11.21 09:32
     */
    Boolean downTemplate(HttpServletResponse response);

    /**
     * 查询所有教师信息-接口
     *
     * @return staffEntity
     * @author 张家豪
     * @since 2018.11.27 15:56
     */
    List<StaffEntity> queryAllStaffInfo(String institutionId);

    /**
     * 导出错误数据
     *
     * @param response 响应
     * @param errorListId 为成功导入的分组id
     * @return 课程信息model
     * @author 张家豪
     * @since 2018年11月30日11:32:54
     */
    boolean downErrorList(String errorListId, HttpServletResponse response);

    /**
     * 添加角色信息
     *
     * @author 宋喆
     * @since 2.0.0 2018-12-23 20:23:25
     */
    boolean addToAuth(StaffEntity staffEntity, String institutionId);
}
